//对axios进行二次封装
import axios from "axios";
import nprogress from "nprogress";//进度条使用
//引入nprogress样式
import 'nprogress/nprogress.css'

import store from "@/store";

//1.利用axios、对象的create创建一个axios实例
//其实request就是axios，只是对其进行配置
const request = axios.create({
    baseURL: '/api',//发请求的时候，路径中会出现api
    timeout: 5000,
})

//请求拦截器，在发送请求之前，请求拦截器可以检测到
request.interceptors.request.use((config) => {
    //携带请求头，游客身份验证
    if (store.state.detail.uuid_token) {
        config.headers.userTempId = store.state.detail.uuid_token;
    }
    // 登录成功携带token vuex临时存储
    if (store.state.user.token) {
        config.headers.token= store.state.user.token;
    }
    
    //localStorage持久化本地存储
    // if (localStorage.getItem('TOKEN')) {
    //     config.headers.token = localStorage.getItem('TOKEN');
    //     console.log(localStorage.getItem('TOKEN'))
    // }
    nprogress.start();//代表进度条开始
    return config;
})

//r
request.interceptors.response.use((res) => {
    //成功的回调函数，服务器响应数据回来以后，响应拦截器可以做一些事情
    nprogress.done();//进度条结束
    return res.data;
}, (error) => {
    //响应失败的回调函数
    return Promise.reject(new Error('faile'));
})

//对外暴露
export default request;